package com.upcode.weighing.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.upcode.weighing.domain.SysEmp;
import com.upcode.weighing.domain.SysOrganization;
import com.upcode.weighing.vo.resp.org.OrgEmpPageListVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 组织机构管理 Mapper 接口
 * </p>
 *
 * @author zhangteng
 * @since 2021-01-14
 */
@Mapper
public interface SysOrganizationMapper extends BaseMapper<SysOrganization> {
    //添加机构
    int addOrganization(SysOrganization sysOrganization);
    //查询机构编码是否存在
    int getOrganizationByCode(@Param("orgCode") String orgCode);
    //获取所有组织机构
    List<SysOrganization> getOrganizationList();
    //添加员工信息
    int addEmp(SysEmp sysEmp);
    //判断员工工号是否存在
    int checkEmp(@Param("userCode") String userCode);
    //获取所有公司信息列表
    List<SysOrganization> getOrgCompany();
    //根据公司ID获取部门列表
    List<SysOrganization> getOrgDept(@Param("id") Long id);
    //根据部门ID获取岗位列表
    List<SysOrganization> getOrgGw(@Param("id") Long id);
    //组织用户分页列表
    IPage<OrgEmpPageListVo> selectPageList(@Param("page") Page page, @Param("vo") OrgEmpPageListVo vo);
    //批量删除组织
    int delOrg(Long[] id);
    //修改组织
    int upOrgName(SysOrganization sysOrganization);
    //判断添加的节点是第几级节点
    Long checkType(@Param("oId")Long oId);
    //修改员工信息
    int upEmp(SysEmp emp);
    //删除员工信息
    int delEmp(Long[] id);
    //根据ID获取员工信息
    SysEmp getEmpById(@Param("id") Long id);
    //解除组织与员工的绑定
    int delOrgEmp(Long[] id);
    //解除组织与用户的绑定
    int delOrgUser(Long[] id);
    //新增员工同时将员工添加到系统用户表
    int addEmpToSysUser(Map m);
    //根据组织机构ID获取账号
    List<String> getEmpName(@Param("id")Long[] id);
    //删除关联到用户表的员工
    int delEmpAndUser(@Param("loginName")String[] loginName);
    //获取编码
    List<String> getCode(@Param("type")Integer type);
}
